﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using DataInfo;
using KenLib.BusinessManager;
using System.Collections.Generic;
using System.IO;

public partial class JOINT_frmJ_StaffDegreeByCompInput : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ((JOINT_MstPage_JOINT)this.Master).changeTitle("資格情報登録");
        ((JOINT_MstPage_JOINT)this.Master).HideLiArea("frmJ_StaffDegreeByCompInput");
        if (Session["役"] == null || Session["役"].ToString() == "")
        {
            Response.Redirect("~/frmD_Login.aspx");
        }
        if (!Page.IsPostBack)
        {
            bind資格コード();
            CheckUpdate();
            if (Session["IdEmp"] == null || Session["ModeUpdateStaffDegreeByCompInput"] == null || Session["IdEmp"].ToString() == "")
            {
                Response.Redirect("frmJ_StaffBasicInfoInput.aspx");
            }
            if (Session["ModeUpdateStaffDegreeByCompInput"].Equals("Update"))
            {
                btn_登録.Text = "更新";
                int ID = Convert.ToInt32(Session["IdEmp"].ToString());
                資格コードManager frm = new 資格コードManager();
                DataTable dt = frm.selectAll資格情報(ID);// sau nay se bo sung them ID
                if (dt.Rows.Count > 0)
                {
                    ddl_資格コード.Text = dt.Rows[0]["資格コード"].ToString();
                    if (dt.Rows[0]["発令開始日"].ToString() != "")
                    {
                        DateTime time = DateTime.Parse(dt.Rows[0]["発令開始日"].ToString());
                        txt_発令開始日.Text = time.ToString("yyyy/MM/dd");
                    }
                    else
                    {
                        txt_発令開始日.Text = dt.Rows[0]["資格コード"].ToString();
                    }
                    if (dt.Rows[0]["発令終了日"].ToString() != "")
                    {
                        DateTime time = DateTime.Parse(dt.Rows[0]["発令終了日"].ToString());
                        txt_発令終了日.Text = time.ToString("yyyy/MM/dd");
                    }
                    else
                    {
                        txt_発令終了日.Text = dt.Rows[0]["発令終了日"].ToString();
                    }
                    if (dt.Rows[0]["実際開始日"].ToString() != "")
                    {
                        DateTime time = DateTime.Parse(dt.Rows[0]["実際開始日"].ToString());
                        txt_実際開始日.Text = time.ToString("yyyy/MM/dd");
                    }
                    else
                    {
                        txt_実際開始日.Text = dt.Rows[0]["実際開始日"].ToString();
                    }
                    if (dt.Rows[0]["実際終了日"].ToString() != "")
                    {
                        DateTime time = DateTime.Parse(dt.Rows[0]["実際終了日"].ToString());
                        txt_実際終了日.Text = time.ToString("yyyy/MM/dd");
                    }
                    else
                    {
                        txt_実際終了日.Text = dt.Rows[0]["実際終了日"].ToString();
                    }
                    txt_変更理由.Text = dt.Rows[0]["変更理由"].ToString();
                }
            }
            else if (Session["ModeUpdateStaffDegreeByCompInput"].Equals("Insert"))
            {
                btn_登録.Text = "登録";
            }
        }
        ddl_資格コード.Focus();
        RequiredFieldValidator1.ErrorMessage = GetError("ER00007");
        RequiredFieldValidator2.ErrorMessage = GetError("ER00001");
        RequiredFieldValidator3.ErrorMessage = GetError("ER00001");
        CustomValidator4.ErrorMessage = GetError("ER00006");
        CustomValidator5.ErrorMessage = GetError("ER00006");
        CustomValidator6.ErrorMessage = GetError("ER00006");
        CustomValidator7.ErrorMessage = GetError("ER00006");
        CustomValidator10.ErrorMessage = GetError("ER00005");
        CustomValidator2.ErrorMessage = GetError("ER00005");
        CustomValidator3.ErrorMessage = GetError("ER00005");
        CustomValidator資格コード.ErrorMessage = GetError("ER00009");
    }

    public String GetError(string errorid)
    {
        string error = "";
        Error er = new Error();
        er.ErrorID = errorid;
        ErrorManager frm_error = new ErrorManager();
        DataTable dt = frm_error.getError(er);
        if (dt.Rows.Count > 0)
        {
            return error = dt.Rows[0][2].ToString();
        }
        else
        {
            return error;
        }
    }
    protected void CustomValidate資格コード(object source, ServerValidateEventArgs args)
    {

        資格情報Manager frm = new 資格情報Manager();
        DataTable dt = new DataTable();
        int 資格コード = 0;

        if (Session["IdEmp"] != null || Session["IdEmp"].ToString() != "")
        {
            int 社員ID = Convert.ToInt32(Session["IdEmp"].ToString());
            dt = frm.Get資格情報By社員ID(社員ID);

        }
        if (Session["IDStaffDegreeByCompInput"] != null)
        {
            int ID = Convert.ToInt32(Session["IDStaffDegreeByCompInput"].ToString());
            DataTable table = frm.Get資格情報ByID(ID);
            if (table.Rows.Count > 0)
            {
                int 社員ID = Convert.ToInt32(table.Rows[0][0].ToString());
                資格コード = Convert.ToInt32(table.Rows[0][1].ToString());// gia tri giu nguyen ban dau
                dt = frm.Get資格情報By社員ID(社員ID);
            }
        }
        if (dt.Rows.Count > 0)
        {
            args.IsValid = true;
            try
            {
                foreach (DataRow row in dt.Rows)
                {
                    if (args.Value.ToString().Equals(row["資格コード"].ToString()))
                    {
                        args.IsValid = false;
                        if (Session["ModeUpdateStaffDegreeByCompInput"].Equals("Update"))
                        {
                            int i = Convert.ToInt32(row["資格コード"].ToString());
                            if (i == 資格コード)
                            {
                                args.IsValid = true;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }

    protected void btn_登録_Click(object sender, EventArgs e)
    {
        資格情報Manager frm = new 資格情報Manager();
        資格情報 obj = new 資格情報();
        obj.廃止区分 = 0;
        if (ddl_資格コード.SelectedValue.ToString() != "-1")
        {
            obj.資格コード1p1 = Convert.ToInt32(ddl_資格コード.SelectedValue.ToString());
        }
        if (txt_発令開始日.Text.ToString() != "")
        {
            DateTime d1;
            d1 = Convert.ToDateTime(txt_発令開始日.Text);
            obj.発令開始日 = d1;
        }
        if (txt_発令終了日.Text.ToString() != "")
        {
            DateTime d1;
            d1 = Convert.ToDateTime(txt_発令終了日.Text);
            obj.発令終了日 = d1;
        }
        if (txt_実際開始日.Text.ToString() != "")
        {
            DateTime d1;
            d1 = Convert.ToDateTime(txt_実際開始日.Text);
            obj.実際開始日 = d1;
        }
        if (txt_実際終了日.Text.ToString() != "")
        {
            DateTime d1;
            d1 = Convert.ToDateTime(txt_実際終了日.Text);
            obj.実際終了日 = d1;
        }
        obj.変更理由 = HttpUtility.HtmlDecode(txt_変更理由.Text.Trim());

        if (Session["ModeUpdateStaffDegreeByCompInput"] != null)
        {
            if (Session["ModeUpdateStaffDegreeByCompInput"].Equals("Update"))
            {
                DataTable dt = frm.select_資格情報(Convert.ToInt32(Session["IdEmp"]));// sau nay them 1 param ID vao
                if (dt.Rows.Count > 0)
                {
                    obj.ID = Convert.ToInt32(dt.Rows[0]["ID"]);//sau nay thay bang ID param o tren
                    frm.Update資格情報(obj);
                    Response.Redirect("frmJ_EmpBasicInfo.aspx");
                }
                else
                {
                    obj.社員ID = Convert.ToInt32(Session["IdEmp"].ToString());//sau nay thay bang ID param o tren
                    frm.Insert資格情報(obj);
                    Response.Redirect("frmJ_EmpBasicInfo.aspx");
                }
                
            }
            else 
            {
                if (Page.IsValid)
                {
                    if (Session["IdEmp"] != null && Session["ModeUpdateStaffDegreeByCompInput"].Equals("Insert"))
                    {
                        obj.社員ID = Convert.ToInt32(Session["IdEmp"].ToString());
                        frm.Insert資格情報(obj);
                        ddl_資格コード.SelectedIndex = 0;
                        Response.Redirect("frmJ_StaffDivisionInput.aspx");
                    }
                }
            }

        }
        
    }
   

    protected void btn_戻る_Click(object sender, EventArgs e)
    {
        if (Session["ModeUpdateStaffDegreeByCompInput"].Equals("Update"))
        {
            Response.Redirect("frmJ_EmpBasicInfo.aspx");
        }
        else
        {
            Session["ModeUpdateStaffEnterInput"] = "Update";
            Response.Redirect("frmJ_StaffContractTypeInput.aspx");
        }
    }
    protected void btn_次_Click(object sender, EventArgs e)
    {
        Response.Redirect("frmJ_StaffDivisionInput.aspx");
    }
    public void bind資格コード()// hien thi資格コード.
    {
        try
        {
            資格コードManager frm = new 資格コードManager();
            DataTable dt = frm.GetAll資格コード();
            ddl_資格コード.DataSource = dt;
            ddl_資格コード.DataTextField = "資格名";
            ddl_資格コード.DataValueField = "ID";
            ddl_資格コード.DataBind();

            ListItem item = new ListItem("[選択]", "-1");
            item.Selected = true;
            ddl_資格コード.Items.Insert(0, item);
        }
        catch { }
    }
    public void CheckUpdate()// ham kiem tra update
    {
        if (Session["ModeUpdateStaffDegreeByCompInput"] != null)
        {
            if (Session["ModeUpdateStaffDegreeByCompInput"].Equals("Update"))
            {
                btn_次.Enabled = false;
                try
                {
                    if (Session["IDStaffDegreeByCompInput"] != null)
                    {
                        資格情報Manager frm = new 資格情報Manager();
                        DataTable dt = new DataTable();
                        資格情報 obj = new 資格情報();
                        obj.ID = Convert.ToInt32(Session["IDStaffDegreeByCompInput"].ToString()); //ID duoc gan tu EmbasicInfo
                        dt = frm.Get資格情報ByID(obj.ID);
                        foreach (DataRow row in dt.Rows)
                        {
                            ddl_資格コード.Items.Remove("-1");
                            ddl_資格コード.SelectedValue = row["資格コード"].ToString();
                            ddl_資格コード.Text = row["資格コード"].ToString();
                            string 発令開始日 = row["発令開始日"].ToString();
                            DateTime d1 = DateTime.Parse(発令開始日);
                            発令開始日 = d1.ToString("yyyy/MM/dd");
                            txt_発令開始日.Text = 発令開始日;
                            string 発令終了日 = row["発令終了日"].ToString();
                            DateTime d2 = DateTime.Parse(発令終了日);
                            発令終了日 = d2.ToString("yyyy/MM/dd");
                            txt_発令終了日.Text = 発令終了日;
                            string 実際開始日 = row["実際開始日"].ToString();
                            DateTime d3 = DateTime.Parse(実際開始日);
                            実際開始日 = d3.ToString("yyyy/MM/dd");
                            txt_実際開始日.Text = 実際開始日;
                            string 実際終了日 = row["実際終了日"].ToString();
                            DateTime d4 = DateTime.Parse(実際終了日);
                            実際終了日 = d2.ToString("yyyy/MM/dd");
                            txt_実際終了日.Text = 実際終了日;
                            txt_変更理由.Text = row["変更理由 "].ToString();
                        }
                    }

                }
                catch { }
            }
        }
    }
    protected void ddl_資格コード_SelectedIndexChanged(object sender, EventArgs e)
    {
        Page.Title = "資格情報登録";
        CustomValidator資格コード.Validate();
        // kiem tra xem dll co validate ko    
        if (CustomValidator資格コード.IsValid == false)
        {
            return;
        }
    }
    protected void btn_リセット_Click(object sender, EventArgs e)
    {
        Response.Redirect("frmJ_StaffDegreeByCompInput.aspx");
    }
}
